home *** CD-ROM | disk | FTP | other *** search
/ Aminet 40 / Aminet 40 (2000)(Schatztruhe)[!][Dec 2000].iso / Aminet / comm / irc / KuangEleven3Gm.lha / Kuang Eleven 3 / Rexx / ksmaster.amirx < prev    next >
Text File  |  1998-05-19  |  7KB  |  217 lines

  1. /* $VER: KSMaster.amirx 1.8 (18.5.98) Kick & Say Master Script           */
  2. /*                                                                       */
  3. /* Read the KSMaster.guide or look on my home page for more info         */
  4. /*                                                                       */
  5. /* IRC Bossman^    Email: bosman@erols.com    www.erols.com/bosman       */
  6. /*-----------------------------------------------------------------------*/
  7.  
  8. OPTIONS RESULTS
  9. SIGNAL ON SYNTAX
  10.  
  11. cr='0a'x
  12.  
  13. libs = "rexxsupport.library rexxdossupport.library rexxkuang11.library"
  14.  
  15. DO UNTIL libs=''
  16.     PARSE VAR libs lib libs
  17.     IF EXISTS('libs:'lib)|EXISTS('Libs/'lib)|EXISTS(lib) THEN DO
  18.         IF ~show('L',lib) THEN call addlib(lib,0,-30,0)
  19.     END
  20.     ELSE DO
  21.         LECHO('Cannot load 'lib)
  22.         EXIT
  23.     END
  24. END
  25.  
  26. PARSE ARG cmd chan nick type rand .
  27.  
  28. cmd = STRIP(cmd);chan = STRIP(chan)
  29. nick = (nick);type = (type);rand = (rand)
  30.  
  31. "GETMYNICK";mynick=RESULT
  32.  
  33. IF LEFT(chan,1) ~= '#' THEN DO
  34.    "GETCHANNEL";channel=result
  35.     rand = type
  36.     type = nick
  37.     nick = chan
  38. END
  39. ELSE channel = chan
  40.  
  41. UPPER cmd
  42.  
  43. IF cmd = "SAY" | cmd = "TSAY" THEN rand = type
  44.  
  45. "GETPROGDIR";Amircpath = result
  46.  
  47. IF cmd = 'KICK' | cmd = 'TKICK' THEN datadir = ADDPART(Amircpath,'kuang11/KSkicks')
  48. IF cmd='SAY'|cmd='PSAY'|cmd='TSAY' THEN datadir = ADDPART(Amircpath,'kuang11/KSSay')
  49. IF cmd='PGREET'|cmd='GREET'|cmd='TGREET' THEN datadir = ADDPART(Amircpath,'kuang11/KSGreets')
  50. totaldata = 0
  51.  
  52. IF nick = "?" THEN DO
  53.     IF cmd = 'KICK' | cmd = 'TKICK' THEN ksdata = 'Kicks'
  54.     IF cmd='SAY'|cmd='PSAY'|cmd='TSAY' THEN ksdata = 'Sayings'
  55.         IF cmd = 'GREET' | cmd = 'TGREET' THEN ksdata = 'Greetings'
  56.     CECHO('Here is a list of Currently installed 'ksdata'.')
  57.         FILES=SHOWDIR(datadir,'FILE',cr)
  58.         IF FILES~='' THEN DO UNTIL FILES=''
  59.         PARSE VAR FILES file (cr) FILES
  60.         IF UPPER(RIGHT(file,4))~='.KSM' THEN iterate
  61.                    filename=addpart(datadir,file)
  62.         OPEN(1,addpart(datadir,file),'R')
  63.             line=readln(1)
  64.         CLOSE(1)
  65.         PARSE VAR line '$VER:' name'.ksm' version date description '*/'
  66.                 numberdata = fcountstrlines(filename,'#?#')
  67.                 totaldata = numberdata + totaldata
  68.                 CECHO(BOLD(LEFT(name,10)) LEFT(version,5) strip(description) '('numberdata')')
  69.     END
  70. CECHO('You have 'bold(totaldata ksdata)' to choose from.')
  71. EXIT
  72. END
  73.  
  74. IF UPPER(nick)='%U' THEN DO
  75.   "GETSELECTEDUSER";nick=result
  76. END
  77.  
  78. IF (cmd = "KICK" | cmd = "TKICK") & nick = "" THEN DO
  79.     CECHO('Usage: /Kicker [NICK | %U] [* | <type>] <NUM>')
  80.     CECHO('/Kicker ?        - Returns list of installed kickfiles.')
  81.     CECHO('/Kicker [NICK] * - Selects random kickfile.')
  82.         CECHO('/Kicker %U * - Uses Selected nick.')
  83.     EXIT
  84. END
  85.  
  86. IF (cmd="SAY"|cmd="TSAY"|cmd="PSAY")&nick = "" THEN DO
  87.     CECHO('Usage: /Say [*|<type>] <NUM>')
  88.     CECHO('/Say ?        - Returns list of installed sayfiles')
  89.     CECHO('/Say * - Selects random sayfile.')
  90.         CECHO('Usage: /PSay [NICK | %U] [*|<type>] <NUM>')
  91.     EXIT
  92. END
  93.  
  94. IF (cmd="TGREET"|cmd="GREET"|cmd="PGREET")&nick = "" THEN DO
  95.     CECHO('Usage: /GREET [NICK | %U] [*|<type>] <NUM>')
  96.     CECHO('/GREET ?        - Returns list of installed GREET files')
  97.     CECHO('/GREET [NICK | %U] * - Selects random GREETfile.')
  98.         CECHO('/PGREET [NICK | %U] [*|<type>] <NUM>')
  99.     EXIT
  100. END
  101.  
  102. IF cmd="KICK"|cmd="TKICK"|cmd="PSAY"|cmd="PGREET"|cmd="GREET" THEN DO
  103.     IF ~ISON(nick) THEN DO
  104.         CECHO(nick 'is not presently in a Channel You are in.')
  105.         EXIT
  106.     END
  107.     "GETUSERS"
  108.         users = STRIP(TRANSLATE(result, "  ", "@+"),"L")
  109.         nick=word(right(users,length(users)-POS(UPPER(nick),UPPER(users))+2),1)
  110.         "userhost" nick;kicknickhost = result
  111.     PARSE VAR kicknickhost username'@'hosty .
  112. END
  113.  
  114. IF cmd = 'SAY' | cmd = 'TSAY' THEN type = nick
  115.  
  116.  IF nick = "*" | type = "*" THEN DO
  117.     FILES=SHOWDIR(datadir,'FILE',cr)
  118.     stemvar.=''
  119.     IF FILES~='' THEN DO I=1 UNTIL FILES=''
  120.         PARSE VAR FILES file (cr) FILES
  121.         IF UPPER(RIGHT(file,4))~='.KSM' THEN DO
  122.             I=I-1
  123.             iterate
  124.         END
  125.         stemvar.i=file
  126.     END
  127.     stemvar.0=I
  128.     rand=RANDOM(1,stemvar.0,RANDOM(1,RANDOM(1,999),time('S')))
  129.     dataline=stemvar.rand
  130.     PARSE VAR dataline type '.' blah
  131.         
  132.  END
  133.  
  134. ksdatafile = ADDPART(datadir,type'.ksm')
  135.  
  136. IF ~EXISTS(ksdatafile) THEN DO
  137.     CECHO('You do not have 'UPPER(bold(type))' data file installed')
  138.     EXIT
  139. END
  140.  
  141. datacount = FCOUNTSTRLINES(ksdatafile,'#?#')
  142.   
  143.  SELECT
  144.     WHEN rand="" THEN rand=RANDOM(1,datacount,RANDOM(1,RANDOM(1,999),time('S')))
  145.     WHEN ~DATATYPE(rand,'W') THEN DO
  146.         oldrand=rand
  147.         rand=RANDOM(1,datacount,RANDOM(1,RANDOM(1,999),time('S')))
  148.         CECHO('Entered argument 'bold(oldrand)' must be a number. Using' rand)
  149.     END
  150.     WHEN rand>datacount THEN DO
  151.         oldrand=rand
  152.         rand=RANDOM(1,datacount,RANDOM(1,RANDOM(1,999),time('S')))
  153.         CECHO('Selected argument 'bold(oldrand)' is too big. Using' rand)
  154.     END
  155.  OTHERWISE NOP
  156.  END
  157.  
  158. cecho("Using datafile" bld(type) "entry number" rand)
  159.  
  160. kickline = FGETLINES(ksdatafile,'#?#',rand)
  161.  
  162. banline = '/ban 'channel '*!*'username'@'||getdomain(hosty)
  163. kickdataline = '/kick 'channel nick
  164.  
  165. Kickline = STRREPLACE("$me,\mynick,$$1,\[kicknick],$chan,\channel,\bld,\und,\inv,\bannick,\kick" , mynick','mynick','nick','nick','channel','channel||','||'02'x||','||'1F'x||','||'16'x||','banline','kickdataline,kickline)
  166.  
  167. DO Y=1 UNTIL kickline=''
  168.     PARSE VAR kickline line.y 'a'x kickline
  169. END
  170.  
  171. IF cmd='PGREET'|cmd='GREET'|cmd='TGREET' THEN dly = 20
  172. IF cmd='PSAY'|cmd='SAY'|cmd='TSAY' THEN dly = 250
  173. IF cmd = 'KICK' | cmd = 'TKICK' THEN dly = 75
  174.  
  175. subdly = dly
  176. SELECT
  177.  WHEN (cmd = 'KICK' | cmd = 'SAY' | cmd = 'GREET') THEN DO
  178.     DO lines = 1 to y
  179.         'say ""'line.lines
  180.         IF UPPER(word(line.lines,1)) = '/NICK' THEN dly = 275
  181.         ELSE dly = subdly
  182.         CALL DELAY(dly)
  183.     END
  184.  END
  185.  WHEN (cmd = 'PSAY' | cmd = 'PGREET') THEN DO
  186.          
  187.        DO lines = 1 to y
  188.                 tly=0
  189.                 IF line.lines = "" THEN iterate
  190.                  IF UPPER(word(line.lines,1))='/ME' THEN DO
  191.                    line.lines=DELWORD(line.lines,1,1)
  192.                    dline=mynick' 'line.lines
  193.                    line.lines=d2c(1)'ACTION 'Line.lines||d2c(1) 
  194.                    tly = 1
  195.                  END
  196.                  IF cmd='PSAY' & tly = 0 THEN PECHO('>'nick'<',line.lines)
  197.                  IF cmd='PSAY' & tly = 1 THEN PECHO('*',dline)
  198.                  IF cmd='PGREET' & tly = 1 THEN PECHO('*',dline)
  199.                  IF cmd='PGREET' & tly = 0 THEN PECHO('>'nick'<',line.lines)
  200.                   PMSG(Nick,line.lines)
  201.               CALL DELAY(dly)
  202.     END
  203.  END
  204.  OTHERWISE DO lines = 1 to y
  205.     CECHO(line.lines)
  206.  END
  207. END
  208. EXIT
  209.  
  210. GETUSR:;"GETUSERS";return result
  211. ISON:;IF pos(UPPER(arg(1))' ',UPPER(getusr())' ')~==0 THEN return 1;ELSE return 0
  212. PECHO:;"ECHO P="d2c(27)"b"arg(1)" C=2" arg(2);return 0
  213. PMSG:;'QueueRAW PRIVMSG' ARG(1) ':'ARG(2);RETURN 0
  214. CECHO:;"ECHO P="d2c(27)"b«"KSMaster"» C=6" arg(1);return 0
  215. LECHO:;"ECHO P="d2c(27)"b«"Error"» C=6" arg(1);return 0
  216. BOLD:;return '02'x||arg(1)||'02'x
  217. SYNTAX:;cecho("Command on line" SIGL "returned" RC ":" errortext(rc) sourceline(SIGL));EXIT